package bman.game.engine;

import java.awt.Dimension;
import java.util.List;

import bman.tools.net.Radio;

/**
 * Implement this class to create a Game. A Game instance contains all the 
 * rules of a game.
 * 
 * <h3> GameMap </h3>
 * 
 * A GameMap represents the world of a game. Anything placed in the GameMap will
 * get rendered by the GraphicsEngine of the GameConsole.
 * 
 * 
 * 
 * @author MrJacky
 *
 */
public abstract class Game
{
	TextFeed textFeed = new TextFeed();
	
	GameMap map = new GameMap();
	
	public abstract List<String> process(String command);
	
	/**
	 * @param command
	 * @return Returns an array of response messages to be sent to other game instances
	 */
	public abstract List<String> processRemote(String command);
	
	public abstract void init();
	
	public GameMap getMap()
	{
		return map;
	}
	
	public GameMap reset()
	{
		GameMap map = getMap();
		map.clear();
		return map;
	}
	
	// TODO Better implmentation of getTextFeed
	public TextFeed getTextFeed()
	{
		return textFeed;
	}
	
	public abstract Dimension getSize();
}
